package moyenDeTransport;
/**
 * Cette classe permet de calculer le prix du billet a partir d'un prix initial
 * @author Fauconnier Simon  Bourdin Théo Jimenez Matthieu Shimabukuro Emmanuel
 *
 */
public class Billet {

    float prixDeBase;
    float prixFinal;
/**
 * constructeur du Billet
 * @param prixDeBase
 * @param prixFinal
 */
    public Billet(float prixDeBase, float prixFinal) {
        this.prixDeBase = prixDeBase;
        this.prixFinal = prixFinal;
    }
/**
 * cette méthode retourne le prix final du billet
 * @return prix final du billet
 */
    public float getPrixFinal() {
        return prixFinal;
    }
/**
 * permet de modifier le prix final
 * @param prixFinal
 */
    public void setPrixFinal(float prixFinal) {
        this.prixFinal = prixFinal;
    }
/**
 * cette méthode retourne le prix initial du billet
 * @return le prix de base du billet
 */
    public float getPrixDeBase() {
        return prixDeBase;
    }
    /**
     * permet de modifier le prix de base
     * @param prixDeBase
     */
    public void setPrixDeBase(int prixDeBase) {
        this.prixDeBase = prixDeBase;
    }
/**
 * Méthode calculant un prix simplement a partir du prix de base
 * @param placesReservees nombre de place demandé par le client
 * @return le prix total
 */
    public float calculPrix(int placesReservees) {
        return this.getPrixDeBase() * placesReservees;
    }
/**
 * ici on tient compte des enfant et adultes un  enfant ayant son billet a moitié prix
 * @param placesAdultes 
 * @param placesEnfants
 * @return le prix total
 */
    public float calculPrix(int placesAdultes, int placesEnfants) {
        if (placesAdultes + placesEnfants < 4)
            return this.getPrixDeBase() * placesAdultes
                    + (this.getPrixDeBase() / 2) * placesEnfants;
        else {
            float x = this.getPrixDeBase() * placesAdultes
                    + (this.getPrixDeBase() / 2) * placesEnfants;
            System.out
                    .println("Vous bénéficiez du tarif de groupe et donc d'une réduction de "
                            + x / 10);
            return x - (x / 10);
        }
    }
/**
 * si le client desire voyager en premiere cela coute 3* plus cher
 * @return le nouveaux prix
 */
    public float ajoutPremiereClasse() {
        return this.getPrixFinal() * 3;
    }
    /**
     * si le client desire voyager en seconde cela coute 2* plus cher
     * @return le nouveaux prix
     */
    public float ajoutSecondeClasse() {
        return this.getPrixFinal() * 2;
    }
    /**
     * si le client desire avoir une couchette on rajoute un supplement
     *
     */
    public void ajoutPrixCouchette(int placesVoulues) {
        this.setPrixFinal(this.getPrixFinal() + 25 * placesVoulues);
    }

    /**
     * si le client desire avoir un repas on rajoute un supplement
     *
     */
    public void ajoutPrixRepas(int placesVoulues) {
        this.setPrixFinal(this.getPrixFinal() + 10 * placesVoulues);
    }

    public void printCoutFinal() {
        System.out.println("Le cout final de votre réservation est de "
                + this.getPrixFinal() + " euros.");
    }
}
